package ch.zbw.swt.sysventory.ui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import IMG.GetPath;
import javax.swing.JRadioButton;
import java.awt.BorderLayout;
import javax.swing.JTextField;

import ch.zbw.swt.sysventory.hibernate.entity.Computer;

/*
 * StartGUI für die Auswahl der gewünschte Statistik
 */

public class GUIStatistik extends JFrame {

	
	//Panels
	private JPanel panel;
	
	//Labels
	private JLabel titelMenuLabel;
	private JLabel bisDatumLabel;
	private JLabel vonDatumLabel;
	
	//Buttons
	private JButton go2resultButton;
	private JButton go2menuButton;
	
	private JRadioButton rechnerRadioButton;
	private JRadioButton swRadioButton;
	private JRadioButton modRechnerRadioButton;
	private JRadioButton scanRadioButton;
	
	private ButtonGroup groupMenuRadioButton;
	
	//Texfelder
	private JTextField vonDatumTxt;
	private JTextField bisDatumTxt;

	//Actionlistener
	private Action action;

	/**
	 * Konstruktor für GUI
	 */
	public GUIStatistik(Action action) {
		this.action = action;
	}
	/**
	 * Initialisierung die GUI
	 */
	public void initialize() {

		//Eigenschaften für GUI
		this.getContentPane().setFont(new Font("Impact", Font.PLAIN, 18));
		this.getContentPane().setBackground(Color.WHITE);
		this.setBackground(Color.WHITE);
		this.setBounds(100, 100, 770, 480);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//Einmittung
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		int top = (screenSize.height - this.getHeight()) / 2;
		int left = (screenSize.width - this.getWidth()) / 2;
		this.setLocation(left, top);
		
		//weitere Eingeschaften
		this.setResizable(false);
		this.getContentPane().setLayout(null);
		this.setVisible(true);
		
		//Einfügen der Elemente
		panel = new JPanel();
		panel.setBackground(Color.WHITE);
		panel.setBounds(10, 11, 744, 83);
		this.getContentPane().add(panel);
		panel.setLayout(null);
		
		ImageIcon goArrow;
		ImageIcon backArrow;
		goArrow = new ImageIcon(
				GetPath.class.getResource("go.png"));			
		backArrow = new ImageIcon(
				GetPath.class.getResource("back.png"));
	
		
		titelMenuLabel = new JLabel("Statistik");
		titelMenuLabel.setFont(new Font("Impact", Font.PLAIN, 36));
		titelMenuLabel.setBounds(294, 11, 209, 61);
		panel.add(titelMenuLabel);
		
		go2resultButton = new JButton(goArrow);
		go2resultButton.setBackground(Color.WHITE);
		go2resultButton.setBounds(592, 11, 129, 61);
		go2resultButton.setBorder(null);
		panel.add(go2resultButton);
		
		go2menuButton = new JButton(backArrow);
		go2menuButton.setBackground(Color.WHITE);
		go2menuButton.setBounds(24, 11, 129, 61);
		go2menuButton.setBorder(null);
		panel.add(go2menuButton);
		
		
		scanRadioButton = new JRadioButton("Scans");
		scanRadioButton.setFont(new Font("Impact", Font.PLAIN, 16));
		scanRadioButton.setBackground(Color.WHITE);
		scanRadioButton.setBounds(134, 130, 274, 45);
		this.getContentPane().add(scanRadioButton);
		
		rechnerRadioButton = new JRadioButton("Rechner");
		rechnerRadioButton.setFont(new Font("Impact", Font.PLAIN, 16));
		rechnerRadioButton.setBackground(Color.WHITE);
		rechnerRadioButton.setBounds(134, 178, 274, 45);
		this.getContentPane().add(rechnerRadioButton);
		
		swRadioButton = new JRadioButton("Softwarepakete");
		swRadioButton.setFont(new Font("Impact", Font.PLAIN, 16));
		swRadioButton.setBackground(Color.WHITE);
		swRadioButton.setBounds(134, 226, 274, 45);
		this.getContentPane().add(swRadioButton);
		
		modRechnerRadioButton = new JRadioButton("modifizierte Rechner");
		modRechnerRadioButton.setFont(new Font("Impact", Font.PLAIN, 16));
		modRechnerRadioButton.setBackground(Color.WHITE);
		modRechnerRadioButton.setBounds(134, 274, 274, 45);
		this.getContentPane().add(modRechnerRadioButton);
		
		groupMenuRadioButton = new ButtonGroup();
		groupMenuRadioButton.add(scanRadioButton);
		groupMenuRadioButton.add(rechnerRadioButton);
		groupMenuRadioButton.add(swRadioButton);
		groupMenuRadioButton.add(modRechnerRadioButton);
		
		vonDatumLabel = new JLabel("Von Datum:");
		vonDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		vonDatumLabel.setBounds(134, 339, 100, 31);
		this.getContentPane().add(vonDatumLabel);
		vonDatumLabel.disable();
		
		vonDatumTxt = new JTextField();
		vonDatumTxt.setBounds(235, 343, 121, 28);
		this.getContentPane().add(vonDatumTxt);
		vonDatumTxt.setColumns(10);
		vonDatumTxt.disable();
		
		bisDatumLabel = new JLabel("Bis Datum:");
		bisDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		bisDatumLabel.setBounds(387, 339, 100, 31);
		this.getContentPane().add(bisDatumLabel);
		bisDatumLabel.disable();
		
		bisDatumTxt = new JTextField();
		bisDatumTxt.setColumns(10);
		bisDatumTxt.setBounds(487, 343, 121, 28);
		this.getContentPane().add(bisDatumTxt);
		bisDatumTxt.disable();
		
		
		//Actionlistener
		scanRadioButton.addActionListener(action);
		rechnerRadioButton.addActionListener(action);
		swRadioButton.addActionListener(action);
		
		scanRadioButton.setActionCommand("hideStatOptions");
		rechnerRadioButton.setActionCommand("hideStatOptions");
		swRadioButton.setActionCommand("hideStatOptions");
		
		modRechnerRadioButton.addActionListener(action);
		modRechnerRadioButton.setActionCommand("extendStatOptions");
		
		go2menuButton.addActionListener(action);
		go2menuButton.setActionCommand("back2Menu");
		
		go2resultButton.addActionListener(action);
		go2resultButton.setActionCommand("go2statResult");
		
	}
	
	/*
	 * Anzeigen des Textfelds von-bis bei der Auswahl von Radionbutton
	 * modifizierte Rechner
	 */
	public void showTextfield(){
		vonDatumLabel.enable();
		vonDatumTxt.enable();
		vonDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		
		bisDatumLabel.enable();
		bisDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		bisDatumTxt.enable();
		
	}
	
	/*
	 * Verstecken des Textfelds von-bis bei der Auswahl von anderen 
	 * Radionbutton als modifizierte Rechner
	 */
	
	public void hideTextfield(){
		vonDatumLabel.disable();
		vonDatumTxt.disable();
		vonDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		
		bisDatumLabel.disable();
		bisDatumLabel.setFont(new Font("Impact", Font.PLAIN, 16));
		bisDatumTxt.disable();
		
	}
	
	/*
	 * Liefert die Auswahl der Radiobutton zurück um die richtige Statistik
	 * anzuzeigen
	 */
	
	public int getAuswahl() {
		if (scanRadioButton.isSelected()){
			return 31;
		}
		if (rechnerRadioButton.isSelected()){
			return 32;
		}
		if (swRadioButton.isSelected()){
			return 33;
		}
		if (modRechnerRadioButton.isSelected()){
			return 34;
		}
		return 0;
	}
	
	/*
	 * Liefert den gewünschten Zeitraum für die Anzeige der modifizieren
	 * Rechner in dieser Zeit
	 */
	
	//Startdatum
	public String getVonDatum(){
		return vonDatumTxt.getText();
	}
	
	//Enddatum
	public String getbisDatum(){
		return bisDatumTxt.getText();
	}
	
}
